<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>bootstrap第3、4章</title>
		<link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" />
		<style>
			body{
				background-color: darkseagreen;
			}
			#wenbenyu::-webkit-input-placeholder{
				color: hotpink;
			}
			h1{
				color: white;
			}
			h2{
				color: brown;
			}
			h3{
				color: cornflowerblue;
			}
			pre{
				height: 200px;
			}
		</style>
	</head>
	<body>
		<div class="container">
			<h1 class="my">第三章 基础表单</h1>
			<h2 class="my">1.基础表单</h2>
			<p>表单主要功能是用来与用户做交流的一个网页控件，良好的表单设计能够让网页与用户更好的沟通。表单中常见的元素主要包括：文本输入框、下拉选择框、单选按钮、复选按钮、文本域和按钮等。其中每个控件所起的作用都各不相同，而且不同的浏览器对表单控件渲染的风格都各有不同。</p>
			<pre class="lead">
				☑   LESS版本：对应源文件 forms.less
				☑ ​  Sass版本：对应源文件 _forms.scss
			</pre>
			<p class="text-primary">编译后的Bootstrap版本，可以查阅bootstrap.css文件第1630行~第1991行</p>
			<p class="text-danger">不过在样式表中，还对表单做了一些初始化，详细代码可以查阅bootstrap.css文件第110行~第178行。</p>
			<p>对于基础表单，Bootstrap并未对其做太多的定制性效果设计，仅仅对表单内的fieldset、legend、label标签进行了定制。如：</p>
			<pre>
				fieldset {
					min-width: 0;
					padding: 0;
					margin: 0;
					border: 0;
				}
				legend {
					display: block;
					width: 100%;
					padding: 0;
					margin-bottom: 20px;
					font-size: 21px;
					line-height: inherit;
					color: #333;
					border: 0;
					border-bottom: 1px solid #e5e5e5;
				}
				label {
					display: inline-block;
					margin-bottom: 5px;
					font-weight: bold;
				}
			</pre>
			<p>主要将这些元素的margin、padding和border等进行了细化设置。</p>
			<p class="lead">当然表单除了这几个元素之外，还有input、select、textarea等元素，在Bootstrap框架中，通过定制了一个类名`form-control`，也就是说，如果这几个元素使用了类名“form-control”，将会实现一些设计上的定制效果。</p>
			<table class="table table-bordered">
				<tr class="success">	
					<td>1、宽度变成了100%</td>	
				</tr>
				<tr class="warning">	
					<td>2、设置了一个浅灰色（#ccc）的边框</td>	
				</tr>
				<tr class="danger">	
					<td>3、具有4px的圆角</td>	
				</tr>
				<tr class="info">	
					<td>4、设置阴影效果，并且元素得到焦点之时，阴影和边框效果会有所变化</td>	
				</tr>
				<tr class="active">	
					<td>5、设置了placeholder的颜色为#999</td>	
				</tr>
			</table>
			<form action="#">
				<input type="text" class="form-control" placeholder="form-control。。。" />
				<textarea class="form-control" name="" rows="" cols=""  placeholder="form-control。。。"></textarea>
			</form>
			<br /><br /><br />
			<h2 class="my">2.水平表单</h2>
			<p class="lead">Bootstrap框架默认的表单是垂直显示风格，但很多时候我们需要的水平表单风格（标签居左，表单控件居右）</p>
			<dl>
				<dt class="bg-danger">在Bootstrap框架中要实现水平表单效果，必须满足以下两个条件：</dt>
				<dd>1、在&lt;form&gt;元素是使用类名“form-horizontal”。</dd>
				<dd>2、配合Bootstrap框架的网格系统。（网格布局会在以后的章节中详细讲解）</dd>
			</dl>
			<dl>
				<dt class="bg-danger">在&lt;form&gt;元素上使用类名“form-horizontal”主要有以下几个作用：</dt>
				<dd>1、设置表单控件padding和margin值。</dd>
				<dd>2、改变“form-group”的表现形式，类似于网格系统的“row”。</dd>
			</dl>
			<p>/*源码请查阅bootstrap.css文件第1963行~第1991行*/</p>
			<pre>
				.form-horizontal .control-label,
				.form-horizontal .radio,
				.form-horizontal .checkbox,
				.form-horizontal .radio-inline,
				.form-horizontal .checkbox-inline {
				padding-top: 7px;
				margin-top: 0;
				margin-bottom: 0;
				}
				.form-horizontal .radio,
				.form-horizontal .checkbox {
				min-height: 27px;
				}
				.form-horizontal .form-group {
				margin-right: -15px;
				margin-left: -15px;
				}
				.form-horizontal .form-control-static {
				padding-top: 7px;
				}
				@media (min-width: 768px) {
				.form-horizontal .control-label {
				text-align: right;
				  }
				}
				.form-horizontal .has-feedback .form-control-feedback {
				top: 0;
				right: 15px;
				}
			</pre>
			<form class="form-horizontal" role="form">
				<div class="form-group">
					<label for="inputEmail3" class="col-sm-2 control-label">邮箱</label>
					<div class="col-sm-10">
						<input type="email" class="form-control" id="inputEmail3" placeholder="请输入您的邮箱地址">
					</div>
				</div>
				<div class="form-group">
					<label for="inputPassword3" class="col-sm-2 control-label">密码</label>
					<div class="col-sm-10">
						<input type="password" class="form-control" id="inputPassword3" placeholder="请输入您的邮箱密码">
					</div>
				</div>
				<div class="form-group">
					<div class="col-sm-offset-2 col-sm-10">
						<div class="checkbox">
							<label>
			          <input type="checkbox"> 记住密码
			        </label>
						</div>
					</div>
				</div>
				<div class="form-group">
					<div class="col-sm-offset-2 col-sm-10">
						<button type="submit" class="btn btn-default">进入邮箱</button>
					</div>
				</div>
			</form>
			<br /><br /><br />
			<h2 class="my">3.内联表单 form-inline</h2>
			<p>内联表单实现原理非常简单，欲将表单控件在一行显示，就需要将表单控件设置成内联块元素（display:inline-block）。/*源码请查阅bootstrap.css文件第1928行~第1962行*/</p>
			<p>如果你要在input前面添加一个label标签时，会导致input换行显示。如果你必须添加这样的一个label标签，并且不想让input换行，你需要将label标签也放在容器“form-group”中，如：</p>
			<form class="form-inline" role="form">
				<div class="form-group">
				  	<label class="sr-only" for="exampleInputEmail2">邮箱</label>
				  	<input type="email" class="form-control" id="exampleInputEmail2" placeholder="请输入你的邮箱地址">
				</div>
				<div class="form-group">
				  	<label class="sr-only" for="exampleInputPassword2">密码</label>
				  	<input type="password" class="form-control" id="exampleInputPassword2" placeholder="请输入你的邮箱密码">
				</div>
				<div class="checkbox">
					<label>
						<input type="checkbox">记住密码
					</label>
				</div>
				<button type="submit" class="btnbtn-default">进入邮箱</button>
			</form>
			<p class="text-danger">回过头来看示例，你或许会问，为什么添加了label标签，而且没有放置在”form-group”这样的容器中，input也不会换行；还有label标签怎么没显示出来。如果你仔细看，在label标签运用了一个类名“sr-only”，标签没显示就是这个样式将标签隐藏了。/*源码请查阅bootstrap.css文件第342行~第350行*/</p>
			<pre>
				.sr-only {
				position: absolute;
				width: 1px;
				height: 1px;
				padding: 0;
				margin: -1px;
				overflow: hidden;
				clip: rect(0, 0, 0, 0);
				border: 0;
				}
			</pre>
			<p class="text-danger">注意：那么Bootstrap为什么要这么做呢？这样不是多此一举吗？其实不是的，如果没有为输入控件设置label标签，屏幕阅读器将无法正确识别。这也是Bootstrap框架另一个优点之处，为残障人员进行了一定的考虑。</p>
			<br /><br /><br />
			<h2 class="my">4.表单控件(输入框input,下拉选择框select,文本域textarea,复选框checkbox和单选择按钮radio,复选框和单选按钮水平排列,按钮)</h2>
			<p class="lead">单行输入框，常见的文本输入框，也就是input的type属性值为text。在Bootstrap中使用input时也必须添加type类型，如果没有指定type类型，将无法得到正确的样式，因为Bootstrap框架都是通过input[type=“?”](其中?号代表type类型，比如说text类型，对应的是input[type=“text”])的形式来定义样式的。<small class="bg-primary">为了让控件在各种表单风格中样式不出错，需要添加类名“form-control”</small></p>
			<form role="form" class="form-horizontal">
				<div class="form-group">
					<h2 class="text-danger">输入框input</h2>
					<label for="input" class="lead text-primary">input</label>
					<input id="input" type="text" class="form-control"/>
				</div>
				<div class="form-group">
					<h2 class="text-danger">下拉选择框select</h2>
					<label for="duohang" class="lead text-primary">多行</label>
					<!--这里select的text-danger没显出来是因为form-control把他覆盖了-->
					<select id="duohang" name="" class="text-danger form-control" multiple="multiple">
						<option value="1">hehe</option>
						<option value="2">qiqi</option>
						<option value="3">xpxp</option>
						<option value="4" selected="selected">lele</option>
					</select>
					<br /><br />
					<label for="danhang" class="lead text-primary" >单行</label>
					<select id="danhang" name="" class="form-control">
						<option value="1">hehe</option>
						<option value="2">qiqi</option>
						<option value="3">xpxp</option>
						<option value="4" selected="selected">lele</option>
					</select>
				</div>
				<div class="form-group">
					<h2 class="text-danger">文本域textarea</h2>
					<label for="wenbenyu" class="lead text-primary">文本域</label>
					<textarea id="wenbenyu" class="form-control" name="" rows="3" cols="3" placeholder="文本域和原始使用方法一样，设置rows可定义其高度，设置cols可以设置其宽度。但如果textarea元素中添加了类名“form-control”类名，则无需设置cols属性。因为Bootstrap框架中的“form-control”样式的表单控件宽度为100%或auto。"></textarea>
				</div>
				<h2 class="text-danger">复选框checkbox和单选择按钮radio</h2>
				<div class="checkbox">
					<label>
						<input type="checkbox" value="">
						记住密码
					</label>
				</div>
				<div class="radio">
					<label>
						<input type="radio" name="optionsRadios" id="optionsRadios1" value="love" checked>
						喜欢
					</label>
				</div>
				<div class="radio">
					<label>
						<input type="radio" name="optionsRadios" id="optionsRadios2" value="hate">
						不喜欢
					</label>
				</div>
				<p>1、不管是checkbox还是radio都使用label包起来了</p>
				<p>2、checkbox连同label标签放置在一个名为“.checkbox”的容器内</p>
				<p>3、radio连同label标签放置在一个名为“.radio”的容器内</p>
				<p>在Bootstrap框架中，主要借助“.checkbox”和“.radio”样式，来处理复选框、单选按钮与标签的对齐方式。源码请查看bootstrap.css文件第1742行～第1762行：</p>
				<pre>
					.radio,
					.checkbox {
						display: block;
						min-height: 20px;
						padding-left: 20px;
						margin-top: 10px;
						margin-bottom: 10px;
					}
					.radio label,
					.checkbox label {
						display: inline;
						font-weight: normal;
						cursor: pointer;
					}
					.radio input[type="radio"],
					.radio-inline input[type="radio"],
					.checkbox input[type="checkbox"],
					.checkbox-inline input[type="checkbox"] {
						float: left;
						margin-left: -20px;
					}
					.radio + .radio,
					.checkbox + .checkbox {
						margin-top: -5px;
					}
				</pre>
				<h2>复选框和单选按钮水平排列</h2>
				<p>有时候，为了布局的需要，将复选框和单选按钮需要水平排列。Bootstrap框架也做了这方面的考虑：</p>
				<p>1、如果checkbox需要水平排列，只需要在label标签上添加类名“checkbox-inline”</p>
				<p>2、如果radio需要水平排列，只需要在label标签上添加类名“radio-inline”</p>
					<form role="form">
					  <div class="form-group">
					    <label class="checkbox-inline">
					      <input type="checkbox"  value="option1">游戏
					    </label>
					    <label class="checkbox-inline">
					      <input type="checkbox"  value="option2">摄影
					    </label>
					    <label class="checkbox-inline">
					    <input type="checkbox"  value="option3">旅游
					    </label>
					  </div>
					  <div class="form-group">
					    <label class="radio-inline">
					      <input type="radio"  value="option1" name="sex">男性
					    </label>
					    <label class="radio-inline">
					      <input type="radio"  value="option2" name="sex">女性
					    </label>
					    <label class="radio-inline">
					      <input type="radio"  value="option3" name="sex">中性
					    </label>
					  </div>
					</form>
					<pre>
						.radio-inline,
						.checkbox-inline {
							display: inline-block;
							padding-left: 20px;
							margin-bottom: 0;
							font-weight: normal;
							vertical-align: middle;
							cursor: pointer;
						}
						.radio-inline + .radio-inline,
						.checkbox-inline + .checkbox-inline {
							margin-top: 0;
							margin-left: 10px;
						}
					</pre>
					<h2 class="text-danger">按钮</h2>
					<p>在Bootstrap框架中的按钮都是采用&lt;button&gt;来实现。</p>
					<button class="btn">btn</button>
					<button class="btn btn-primary">primary</button>
					<button class="btn btn-info">info</button>
					<button class="btn btn-success">success</button>
					<button class="btn btn-warning">warning</button>
					<button class="btn btn-danger">danger</button>
					<button class="btn btn-inverse">inverse</button>
					<h2 class="text-danger">表单控件大小</h2>
					<p>前面看到的表单控件都正常的大小。可以通过设置控件的height，line-height，padding和font-size等属性来实现控件的高度设置。不过Bootstrap框架还提供了两个不同的类名，用来控制表单控件的高度。这两个类名是：</p>
					<ul>
						<li>1、input-sm:让控件比正常大小更小</li>
						<li>2、input-lg:让控件比正常大小更大</li>
					</ul>
					<input class="input-sm form-control" type="text" placeholder="添加.input-sm，控件变大"/>
					<input class="input-lg form-control" type="text" placeholder="添加.input-lg，控件变大"/>
					<p>源码请查阅bootstrap.css文件第1795~第1824行</p>
					<p>从上面的源码中不难发现，不管是“input-sm”还是“input-lg”仅对控件高度做了处理。但往往很多时候，我们需要控件宽度也要做一定的变化处理。这个时候就要借住Bootstrap框架的网格系统。所以你要控制表单宽度</p>
				<h2 class="text-danger">表单控件状态(焦点状态)</h2>
				<dl class="dl-horizontal">
					<dt class="text-primary">表单状态的作用：</dt>
					<dd>每一种状态都能给用户传递不同的信息，比如表单有焦点的状态可以告诉用户可以输入或选择东西，禁用状态可以告诉用户不可以输入或选择东西，还有就是表单控件验证状态，可以告诉用户的操作是否正确等。那么在Bootstrap框架中的表单控件也具备这些状态。</dd>
					<dd>焦点状态是通过伪类“:focus”来实现。Bootstrap框架中表单控件的焦点状态删除了outline的默认样式，重新添加阴影效果。</dd>
				</dl>
				<pre>
					.form-control:focus {
						border-color: #66afe9;
						outline: 0;
						-webkit-box-shadow: inset 0 1px 1pxrgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
						box-shadow: inset 0 1px 1pxrgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
					}
				</pre>
				<p>在Bootstrap框架中，file、radio和checkbox控件在焦点状态下的效果也与普通的input控件不太一样，主要是因为Bootstrap对他们做了一些特殊处理：</p>
				<pre>
					input[type="file"]:focus,
					input[type="radio"]:focus,
					input[type="checkbox"]:focus {
						outline: thin dotted;
						outline: 5px auto -webkit-focus-ring-color;
						outline-offset: -2px;
					}
				</pre>
				<input type="text" class="form-control"/>
				<h2 class="text-danger">表单控件状态(禁用状态)</h2>
				<p>Bootstrap框架的表单控件的禁用状态和普通的表单禁用状态实现方法是一样的，在相应的表单控件上添加属性“disabled”。和其他表单的禁用状态不同的是，Bootstrap框架做了一些样式风格的处理：</p>
				<p>/*源码请查看bootstrap.css文件第1723行～第1729行*/</p>
				<pre>
					.form-control[disabled],
					.form-control[readonly],
					fieldset[disabled] .form-control {
						cursor: not-allowed;
						background-color: #eee;
						opacity: 1;
					}
				</pre>
				<p>使用方法为：只需要在需要禁用的表单控件上加上“disabled”即可</p>
				<input class="form-control" type="text" placeholder="表单已禁用，不能输入" disabled>
				<h2 class="text-danger">表单控件状态(验证状态)</h2>
				<dl>
					<dt>在制作表单时，不免要做表单验证。同样也需要提供验证状态样式，在Bootstrap框架中同样提供这几种效果。</dt>
					<dd>1、.has-warning:警告状态（黄色）</dd>
					<dd>2、.has-error：错误状态（红色）</dd>
					<dd>3、.has-success：成功状态（绿色）</dd>
					<p>使用的时候只需要在form-group容器上对应添加状态类名。</p>
					<pre>
						<div class="form-group has-success">
							<label for="" class="control-label">has-success</label>
							<input type="text" class="form-control" />
						</div>
						<div class="form-group has-warning">
							<label for="" class="control-label">has-warning</label>
							<input type="text" class="form-control" />
						</div>
						<div class="form-group has-error">
							<label for="" class="control-label">has-error</label>
							<input type="text" class="form-control" />
						</div>
					</pre>
					<p>其他两种状态省略源码不在此展示。</p>
					<p>很多时候，在表单验证的时候，不同的状态会提供不同的 icon，比如成功是一个对号（√），错误是一个叉号（×）等。在Bootstrap框中也提供了这样的效果。如果你想让表单在对应的状态下显示 icon 出来，只需要在对应的状态下添加类名“has-feedback”。请注意，此类名要与“has-error”、“has-warning”和“has-success”在一起：</p>
					<form role="form">
					  <div class="form-group has-success has-feedback">
					    <label class="control-label" for="inputSuccess1">成功状态</label>
					    <input type="text" class="form-control" id="inputSuccess1" placeholder="成功状态" >
					    <span class="glyphicon glyphicon-ok form-control-feedback"></span>
					  </div>
					  <div class="form-group has-warning has-feedback">
					    <label class="control-label" for="inputWarning1">警告状态</label>
					    <input type="text" class="form-control" id="inputWarning1" placeholder="警告状态">
					    <span class="glyphicon glyphicon-warning-sign form-control-feedback"></span>
					  </div>
					  <div class="form-group has-error has-feedback">
					    <label class="control-label" for="inputError1">错误状态</label>
					    <input type="text" class="form-control" id="inputError1" placeholder="错误状态">
					    <span class="glyphicon glyphicon-remove form-control-feedback"></span>  
					  </div>
					</form>
					<p>从效果图中可以看出，图标都居右。在 Bootstrap 的小图标都是使用@font-face来制作（后面的内容中将会着重用一节内容来介绍）。而且必须在表单中添加了一个 span 元素</p>
				</dl>
			</form>
			
			<h2 class="text-danger">表单提示信息</h2>
			<p>平常在制作表单验证时，要提供不同的提示信息。在Bootstrap框架中也提供了这样的效果。使用了一个"help-block"样式，将提示信息以块状显示，并且显示在控件底部。</p>
			<form role="form">
			  <div class="form-group has-success has-feedback">
			    <label class="control-label" for="inputSuccess1">成功状态</label>
			    <input type="text" class="form-control" id="inputSuccess1" placeholder="成功状态" >
			    <span class="help-block">你输入的信息是正确的</span>
			    <span class="glyphicon glyphicon-ok form-control-feedback"></span>
			  </div>
			</form>    
			<p>在Bootstrap V2.x版本中还提供了一个行内提示信息，其使用了类名“help-inline”。一般让提示信息显示在控件的后面，也就是同一水平显示。如果你想在BootstrapV3.x版本也有这样的效果，你可以添加这段代码：</p>
			<pre>
				.help-inline{
				  display:inline-block;
				  padding-left:5px;
				  color: #737373;
				}
			</pre>
			<p>如果你不想为bootstrap.css增加自己的代码，而且设计又有这种样的需求，那么只能借助于Bootstrap的网格系统。(网格系统在后面的章节中会详细讲解)</p>
			<p class="lead text-primary">结束语：有关于Bootstrap框架中表单的运用除了按钮部分，到此就算是介绍完了。如果你觉得这样的表单效果并不是你需要的，你完全可以通过forms.less或者_forms.scss文件进行定制，然后重新编译就可以得到你需要的表单效果。在接下来的一节中，我们Bootstrap框架中另一个核心内容——按钮。</p>
			<br /><br /><br />
			<h1>1.按钮</h1>
			<p>Bootstrap框架的按钮也是一个独立部分，我们同样在不同的版本之中能找到对应的代码：</p>
			<li>1.LESS版本：查看源文件buttons.less</li>
			<li>2.Sass版本：查看源文件_buttons.scss</li>
			<li>3.已编译版本：查看源文件bootstrap.css文件第1992行～第2353行</li>
			<button class="btn" type="btn">基础按钮.btn</button>
			<button class="btn btn-default" type="btn">默认按钮.btn-default</button>
			<button class="btn btn-primary" type="btn">主要按钮.btn-primary</button>
			<button class="btn btn-success" type="btn">成功按钮.btn-success</button>
			<button class="btn btn-info" type="btn">信息按钮.btn-info</button>
			<button class="btn btn-warning" type="btn">警告按钮.btn-warning</button>
			<button class="btn btn-danger" type="btn">危险按钮.btn-danger</button>
			<button class="btn btn-link" type="btn">链接按钮.btn-link</button>
			<p class="lead">Bootstrap框架V3.x版本的基本按钮和V2.x版本的基本按钮一样，都是通过类名“btn”来实现。不同的是在V3.x版本要简约很多，去除了V2.x版本中的大量的CSS3中的部分特效，比如说文本阴影（text-shadow）、渐变背景（background-image）、边框阴影（box-shadow）等。<span class="text-danger">难能可贵的是，Bootstrap框架中的考虑了不同浏览器的解析差异，进行了比较安全的兼容性处理，使按钮效果在不同的浏览器中所呈现的效果基本相同。</span></p>
			<h2 class="text-danger">2.多标签支持</h2>
			<p>一般制作按钮除了使用&lt;button&gt;&lt;input type="submit"&gt;和&lt;a&gt;标签等。同样，在Bootstrap框架中制作按钮时，除了刚才所说的这些标签元素之外，还可以使用在其他的标签元素上，唯一需要注意的是，要在制作按钮的标签元素上添加类名“btn”。如果不添加是不会有任何按钮效果。</p>
			<button class="btn btn-default">button</button>
			<input type="button btn-default" class="btn" value="input"/>
			<a href="javascript:;" class="btn btn-default">a</a>
			<div class="btn btn-default">btn</div>
			<span class="btn btn-default">span</span>
			<p class="lead text-danger">注意：虽然在Bootstrap框架中使用任何标签元素都可以实现按钮风格，但个人并不建议这样使用，为了避免浏览器兼容性问题，个人强烈建议使用button或a标签来制作按钮。</p>
			<br /><br />
			<h2 class="text-primary">3.定制风格</h2>
			<p class="text-warning">在Bootstrap框架中除了默认的按钮风格之外，还有其他六种按钮风格，每种风格的其实都一样，不同之处就是按钮的背景颜色、边框颜色和文本颜色。</p>
			<br /><br />
			<h2 class="text-primary">4.按钮大小<small class="text-danger">对于按钮的大小，也是可以定制的</small></h2>
			<p>在Bootstrap框架中控制按钮的大小都是通过修改按钮的padding、line-height、font-size和border-radius几个属性。</p>
			<ul>
				<li><button class="btn btn-lg btn-primary">btn-lg</button></li>
				<li><button class="btn btn-primary">normal</button></li>
				<li><button class="btn btn-sm btn-primary">btn-sm</button></li>
				<li><button class="btn btn-xs btn-primary">btn-xs</button></li>
			</ul>
			<br />
			<h2 class="text-primary">5.块状按钮btn-block</h2>
			<p class="lead text-danger">从前面几节的内容中，大家可能发现了，每个示例中的按钮宽度都是依靠按钮文本和padding的值来决定。但有时候在制作按钮的时候需要按钮宽度充满整个父容器（width:100%），特别是在移动端的制作中。那么前面的方法我们都无法很好的实现，除非重新定义按钮的宽度。其实在Bootstrap中并不需要这样做，Bootstrap框架中提供了一个类名“btn-block”。按钮使用这个类名就可以让按钮充满整个容器，并且这个按钮不会有任何的padding和margin值。在实际当中，常把这种按钮称为块状按钮。具体源码请查阅bootstrap.</p>
			<button class="btn btn-primary btn-lg btn-block">按钮lg</button>
			<button class="btn btn-primary btn-block">按钮normol</button>
			<button class="btn btn-primary btn-sm btn-block">按钮sm</button>
			<button class="btn btn-primary btn-xs btn-block">按钮xs</button>
			<br />
			<h2 class="text-primary">6.按钮状态——活动状态</h2>
			<p class="lead text-primary">Bootstrap按钮的活动状态主要包括按钮的悬浮状态(:hover)，点击状态(:active)和焦点状态（:focus）几种。</p>
			<p class="lead text-primary">当按钮处理正在点击状态（也就是鼠标按下的未松开的状态），对于&lt;button&gt;元素是通过“:active”伪类实现，而对于&lt;a&gt;这样的标签元素则是通过添加类名“.active”来实现。</p>
			<pre>
				.btn:focus,
				.btn:active:focus,
				.btn.active:focus {
					outline: thin dotted;
					outline: 5px auto -webkit-focus-ring-color;
					outline-offset: -2px;
				}
				.btn:hover,
				.btn:focus {
					color: #333;
					text-decoration: none;
				}
				.btn:active,
				.btn.active {
					background-image: none;
					outline: 0;
					  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
					box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
				}
			</pre>
			<pre>
				.btn-default:hover,
				.btn-default:focus,
				.btn-default:active,
				.btn-default.active,
				.open .dropdown-toggle.btn-default {
					color: #333;
					background-color: #ebebeb;
					border-color: #adadad;
				}
				.btn-default:active,
				.btn-default.active,
				.open .dropdown-toggle.btn-default {
					background-image: none;
				}
			</pre>
			<br />
			<h2 class="text-primary">7.按钮状态——禁用状态</h2>
			<p class="lead text-danger">禁用状态与其他状态按钮相比，就是背景颜色的透明度做了一定的处理，opcity的值从100%调整为65%。</p>
			<dl class="dl-horizontal">
				<dt>在Bootstrap框架中，要禁用按钮有两种实现方式：</dt>
				<dd>方法1：在标签中添加disabled属性</dd>
				<dd>方法2：在元素标签中添加类名“disabled”</dd>
			</dl>
			<p class="text-danger lead">“.disabled”样式不会禁止按钮的默认行为，比如说提交和重置行为等。如果想要让这样的禁用按钮也能禁止按钮的默认行为，则需要通过JavaScript这样的语言来处理。对于&lt;a&gt;标签也存在类似问题，如果通过类名“.disable”来禁用按钮，其链接行为是无法禁止。而在元素标签中添加“disabled”属性的方法是可以禁止元素的默认行为的。</p>
			<pre>
				.btn.disabled,
				.btn[disabled],
				fieldset[disabled] .btn {
					pointer-events: none;
					cursor: not-allowed;
					filter: alpha(opacity=65);
					  -webkit-box-shadow: none;
					box-shadow: none;
					opacity: .65;
				}
			</pre>
			<p class="lead">同样的，其他风格按钮也具有这样的效果，只是颜色做了一定的调整</p>
			<button class="btn btn-primary" disabled="disabled">属性禁用按钮</button>
			<br /><br />
			<button class="btn btn-primary disabled">类禁用按钮</button>
			<p>到此有关于按钮的基础知识就算是介绍完了，同样的，大家可以通过buttons.less或者_buttons.scss来自定义按钮风格。</p>
			<br />
			<h2 class="text-primary">8.图像</h2>
			<dl class="dl-horizontal">
				<dt>Bootstrap框架中对于图像的样式风格提供以下几种风格：</dt>
				<dd>1、img-responsive：响应式图片，主要针对于响应式设计</dd>
				<dd>2、img-rounded：圆角图片</dd>
				<dd>3、img-circle：圆形图片</dd>
				<dd>4、img-thumbnail：缩略图片</dd>
			</dl>
			<pre>
				img {
				vertical-align: middle;
				}
				.img-responsive,
				.thumbnail>img,
				.thumbnail a >img,
				.carousel-inner > .item >img,
				.carousel-inner > .item > a >img {
					display: block;
					max-width: 100%;
					height: auto;
				}
				.img-rounded {
					border-radius: 6px;
				}
				.img-thumbnail {
					display: inline-block;
					max-width: 100%;
					height: auto;
					padding: 4px;
					line-height: 1.42857143;
					background-color: #fff;
					border: 1px solid #ddd;
					border-radius: 4px;
					  -webkit-transition: all .2s ease-in-out;
					transition: all .2s ease-in-out;
				}
				.img-circle {
					border-radius: 50%;
				}
			</pre>
			<dl>
				<dt>设置图片大小：</dt>
				<dd>由于样式没有对图片做大小上的样式限制，所以在实际使用的时候，需要通过其他的方式来处理图片大小。比如说控制图片容器大小。（注意不可以通过css样式直接修改img图片的大小，这样操作就不响应了）</dd>
			</dl>
			<dl>
				<dt>注意：</dt>
				<dd>对于圆角图片和圆形图片效果，因为是使用了CSS3的圆角样式来实现的，所以注意对于IE8以及其以下版本不支持，是没有圆角效果的。</dd>
			</dl>
			<dl>
				<dt>Bootstrap框架为了大家更好的维护图像的样式，同样将这部分样式独立出来：</dt>
				<dd>1、LESS版本，可以查阅scaffolding.less</dd>
				<dd>2、Sass版本，可以查阅_scaffolding.scss</dd>
				<dd>大家可以修改其中之一，重新编译就可以得到自己需要的图片样式效果。</dd>
			</dl>
			<img src="http://placehold.it/140x140" alt="" class="img-rounded"/>
			<img src="http://placehold.it/140x140" alt="" class="img-circle"/>
			<img src="http://placehold.it/140x140" alt="" class="img-thumbnail"/>
			<div style="width: 60px;">
				<img src="http://placehold.it/140x140" alt="" class="img-responsive"/>
			</div>
			<br />
			<h2 class="text-primary">9.图标(不全就去查慕课网教程)</h2>
			<p class="lead text-primary">这里说的图标就是Web制作中常看到的小icon图标，可以说这些小icon图标是一个优秀Web中不可缺少的一部分，起到画龙点睛的效果。在Bootstrap框架中也为大家提供了近200个不同的icon图片，而这些图标都是使用CSS3的@font-face属性配合字体来实现的icon效果。</p>
			<p class="text-danger">在具体介绍Bootstrap的icon图标之前，我们首先要感谢glyphicons.com网站，因为Bootstrap框架中图标都是glyphicons.com这个商业网站提供的，并且免费授权给Bootstrap框架使用，所以大家可以放心使用在自己的项目当中。</p>
			<p class="lead text-primary>大家或许会问，这些字体我去哪里获取。如果你是从前面一直阅读过来，我们在介绍文件结构那一节就已介绍过。在Bootstrap框架中有一个fonts的目录，这个目录中提供的字体文件就是用于制作icon的字体文件。</p>
			<p class="lead text-primary>自定义完字体之后，需要对icon设置一个默认样式，在Bootstrap框架中是通过给元素添加“glyphicon”类名来实现，然后通过伪元素“:before”的“content”属性调取对应的icon编码：</p>
			<a class="btn btn-primary" target="_blank" href="http://getbootstrap.com/components/#glyphicons">具体字体图标查询地址：http://getbootstrap.com/components/#glyphicons</a>
			<pre>
				@font-face {
					font-family: 'Glyphicons Halflings';
					src: url('../fonts/glyphicons-halflings-regular.eot');
					src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
				}
			</pre>
			<pre>
				.glyphicon {
					position: relative;
					top: 1px;
					display: inline-block;
					font-family: 'Glyphicons Halflings';
					font-style: normal;
					font-weight: normal;
					line-height: 1;
					-webkit-font-smoothing: antialiased;
					-moz-osx-font-smoothing: grayscale;
				}
				.glyphicon-asterisk:before {
					content: "\2a";
				}
			</pre>
			
			<br /><br /><br />
			<h1 class="text-primary">第4章 网格系统</h1>
			<h2 class="text-warning">1.实现原理</h2>
			<p class="lead text-primary">网格系统的实现原理非常简单，仅仅是通过定义容器大小，平分12份(也有平分成24份或32份，但12份是最常见的)，再调整内外边距，最后结合媒体查询，就制作出了强大的响应式网格系统。Bootstrap框架中的网格系统就是将容器平分成12份。</p>
			<p class="lead bg-danger">在使用的时候大家可以根据实际情况重新编译LESS（或Sass）源码来修改12这个数值（也就是换成24或32，当然你也可以分成更多，但不建议这样使用）。</p>
			<h2 class="text-primary">2.工作原理</h2>
			<p class="lead bg-danger">1、数据行(.row)必须包含在容器（.container）中，以便为其赋予合适的对齐方式和内距(padding)。如：</p>
			<p class="lead bg-danger">2、在行(.row)中可以添加列(.column)，但列数之和不能超过平分的总列数，比如12。如：</p>
			<div class="container">
				<div class="row">
					<div class="col-lg-4 bg-danger text-center">col-lg-4</div>
					<div class="col-lg-5 bg-primary text-center">col-lg-8</div>
					<div class="col-lg-3 bg-info text-center">col-lg-8</div>
				</div>
				<br />
				<div class="row">
					<div class="col-lg-2 bg-danger text-center">col-lg-2</div>
					<div class="col-lg-4 bg-primary text-center">col-lg-4</div>
					<div class="col-lg-6 bg-info text-center">col-lg-6</div>
				</div>
				<br />
			</div>
			<p class="lead bg-danger">3、具体内容应当放置在列容器（column）之内，而且只有列（column）才可以作为行容器(.row)的直接子元素</p>
			<p class="lead bg-danger">4、通过设置内距（padding）从而创建列与列之间的间距。然后通过为第一列和最后一列设置负值的外距（margin）来抵消内距(padding)的影响</p>
			<h2 class="text-primary">3.基本用法</h2>
			<p class="lead ">实现列组合方式非常简单，只涉及两个CSS两个特性：<span class="bg-primary">浮动与宽度百分比</span>。在bootstrap.css文件的第1088行～1126行：</p>
			<h2 class="text-primary">4.列偏移</h2>
			<p class="lead bg-primary">有的时候，我们不希望相邻的两个列紧靠在一起，但又不想使用margin或者其他的技术手段来。这个时候就可以使用列偏移（offset）功能来实现。使用列偏移也非常简单，只需要在列元素上添加类名“col-md-offset-*”(其中星号代表要偏移的列组合数)，那么具有这个类名的列就会向右偏移。例如，你在列元素上添加“col-md-offset-4”，表示该列向右移动4个列的宽度。</p>
			<div class="row">
				<div class="col-lg-2 bg-danger text-center">col-lg-2</div>
				<div class="col-lg-4 bg-primary text-center col-lg-offset-5">col-lg-4</div>
			</div>
			<p class="lead bg-primary">实现原理非常简单，就是利用十二分之一（1/12）的margin-left。然后有多少个offset，就有多少个margin-left。在bootstrap.css中第1205行～1241行所示：</p>
			<pre class="pre-scrollable">
				.col-md-offset-12 {
				   margin-left: 100%;
				}
				.col-md-offset-11 {
					margin-left: 91.66666667%;
				}
				.col-md-offset-10 {
					margin-left: 83.33333333%;
				}
				.col-md-offset-9 {
					margin-left: 75%;
				}
				.col-md-offset-8 {
					margin-left: 66.66666667%;
				}
				.col-md-offset-7 {
					margin-left: 58.33333333%;
				}
				.col-md-offset-6 {
					margin-left: 50%;
				}
				.col-md-offset-5 {
					margin-left: 41.66666667%;
				}
				.col-md-offset-4 {
					margin-left: 33.33333333%;
				}
				.col-md-offset-3 {
					margin-left: 25%;
				}
				.col-md-offset-2 {
					margin-left: 16.66666667%;
				}
				.col-md-offset-1 {
					margin-left: 8.33333333%;
				}
				.col-md-offset-0 {
					margin-left: 0;
				}
			</pre>
			<h2 class="bg-primary">5.列排序</h2>
			<p class="lead text-primary">列排序其实就是改变列的方向，就是改变左右浮动，并且设置浮动的距离。在Bootstrap框架的网格系统中是通过添加类名“col-md-push-*”和“col-md-pull-*” (其中星号代表移动的列组合数)。</p>
			<div class="container">
				<div class="row">
					<div class="col-lg-2 text-center bg-danger">col-lg-2</div>
					<div class="col-lg-4 text-center bg-primary">col-lg-4</div>
				</div>
				<br />
				<div class="row">
					<div class="col-lg-2 text-center bg-danger col-lg-pull-1">col-lg-2</div>
					<div class="col-lg-4 text-center bg-primary col-lg-push-2">col-lg-4</div>
				</div>
			</div>
			<br />
			<p class="lead bg-primary">用的相对定位，改变的是left或right，相对于原位置</p>
			<pre>
				.col-lg-pull-12 {
			   		right: 100%;
				}
				.col-md-push-12 {
	    				left: 100%;
				}
			</pre>
			<h2 class="bg-primary">6.列的嵌套</h2>
			<p class="lead bg-primary">Bootstrap框架的网格系统还支持列的嵌套。你可以在一个列中添加一个或者多个行（row）容器，然后在这个行容器中插入列（像前面介绍的一样使用列）。但在列容器中的行容器（row），宽度为100%时，就是当前外部列的宽度。来看一个简单示例：</p>
			<div class="container">
				<div class="row">
					<div class="col-lg-6">
						<div class="row">
							<div class="col-lg-2 bg-info text-center">列嵌套</div>
							<div class="col-lg-2 bg-danger text-center">列嵌套</div>
							<div class="col-lg-2 bg-primary text-center">列嵌套</div>
						</div>
					</div>
					<div class="col-lg-6 text-center bg-primary">给你对比的</div>
				</div>
			</div>
		</div>
	</body>
</html>
